page.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. "use client";
  2. import { useRouter } from "next/navigation";
  3. import { workoutSessionLocal } from "@/shared/lib/workout-session/workout-session.local";
  4. import { WorkoutSessionList } from "@/features/workout-session/ui/workout-session-list";
  5. import { WorkoutSessionHeatmap } from "@/features/workout-session/ui/workout-session-heatmap";
  6. import { Button } from "@/components/ui/button";
  7. export default function ProfilePage() {
  8. const router = useRouter();
  9. const sessions = typeof window !== "undefined" ? workoutSessionLocal.getAll() : [];
  10. const values: Record<string, number> = {};
  11. sessions.forEach((session) => {
  12. const date = session.startedAt.slice(0, 10);
  13. values[date] = (values[date] || 0) + 1;
  14. });
  15. const until =
  16. sessions.length > 0
  17. ? sessions.reduce((max, s) => (s.startedAt > max ? s.startedAt : max), sessions[0].startedAt).slice(0, 10)
  18. : new Date().toISOString().slice(0, 10);
  19. return (
  20. <div>
  21. <WorkoutSessionHeatmap until={until} values={values} />
  22. <WorkoutSessionList onSelect={(id) => router.push(`/workout-builder?sessionId=${id}`)} />
  23. <div className="mt-8 flex justify-center">
  24. <Button onClick={() => router.push("/workout-builder")} size="large">
  25. Nouvelle séance
  26. </Button>
  27. </div>
  28. </div>
  29. );
  30. }